"""6、请设计一个Python抽象基类（Abstract Base Classes, ABC）案例，并在
主程序中调用展示抽象特性。
"""
from abc import ABC, abstractmethod

# 形状抽象类
###这里将无法实例化Shape类，因为它包含一个抽象方法area.
###如果一个类继承自Shape但是没有重写area的具体实现，也会报错
class Shape(ABC):
    @abstractmethod
    def area(self):
        pass
# 圆形类
class Circle(Shape):
    def __init__(self, r):
        # r是半径
        self.r = r

    def area(self):
        return 3.14 * self.r * self.r
# 方形类
class Square(Shape):
    def __init__(self, s):
        # s是边长
        self.s = s
    def area(self):
        return self.s * self.s

if __name__ == "__main__":
    circle = Circle(10)
    square = Square(6)
    print(circle.area())
    print(square.area())